
#include "../logs/log.h"

void log_test()
{
    //提供日志宏函数,落地为标准输出
    DEBUG("测试开始-------");
    INFO("测试开始-------");
    WARN("测试开始-------");
    ERROR("测试开始-------");
    FATAL("测试开始-------");
    //可以通过指定名字获取日志器
    Log::Logger::ptr asy=Log::getLogger("asyncLogger");
    asy->debug("%s%d","测试信息",1);
    asy->info("%s%d","测试信息",2);
    asy->warn("%s%d","测试信息",1);
    asy->error("%s%d","测试信息",2);
    asy->fatal("%s%d","测试信息",1);
    DEBUG("测试结束-------");
    INFO("测试结束-------");
    WARN("测试结束-------");
    ERROR("测试结束-------");
    FATAL("测试结束-------");
}

void cloud_test()
{
    Log::GlobalBuilder build;
    build.buildLoggerName("test");
    build.buildSink<Log::CloudSink>("106.52.235.101",8080,1,5);
    auto ptr=build.build();
    ptr->warn("this is a test\n");
}

int main()
{
    // /*以下为创建日志器的样例*/
    // //参数可选
    // /*
    // LOGGER_ASYNC//异步日志器
    // LOGGER_SYNC//同步日志器
    // */
    // Log::GlobalBuilder globa(Log::LoggerTpye::LOGGER_ASYNC);
    // // 日志器名字必须要有
    // globa.buildLoggerName("asyncLogger");
    // /*
    // 格式含义
    //         %d 日期 子格式
    //         %T 缩进
    //         %t 线程id
    //         %p 日志级别
    //         %c 日志器名称
    //         %f 文件名
    //         %l 行号
    //         %m 日志消息
    //         %n 换行
    // */
    // // 不设置则默认格式为   [%d{%H:%M:%S}][%t][%p][%c][%f:%l] %m%n
    // // 即时间{年-月-日 时:分:秒}缩进 线程ID 缩进 [日志级别] 缩进 [日志名称] 缩进 文件名:行号 缩进 消息换行
    // globa.buildFormat("[%t][%p][%f:%l][%m][%c]%n");
    // // 落地方式不设置则默认会有一个标准输出落地
    // // 标准输出落地
    // globa.buildSink<Log::StdoutSink>();
    // // 限制输出等级,不设置则默认设置为DEBUG,输出等级由小到大为
    // /*UNKNOW = 0, // 未知错误
    //         DEBUG,      // 调试信息
    //         INFO,       // 提示信息
    //         WARN,       // 警告
    //         ERROR,      // 错误
    //         FATAL,      // 致命错误
    //         OFF,        // 关闭
    // */
    // globa.buildLimit(Log::LogLevel::DEBUG);
    // // 指定文件落地,需传文件路径及名称
    // globa.buildSink<Log::FileSink>("./logfile/test.log");
    // // 滚动文件落地,超过设置大小则会切换文件(单位字节),需传文件基础名字及大小,文件全名为基础名外加时间及一个计数
    // globa.buildSink<Log::RollBySizeSink>("./logfile/rollbysize-", 1024 * 1024);
    // // 创建日志器
    // globa.build();
    // log_test();
    // return 0;

    //远程落地测试
    cloud_test();
    return 0;
}